home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
007
/
extbatch.arc
/
BATDOC.BAT
< prev
next >
Wrap
DOS Batch File
|
1984-08-28
|
40KB
|
1,028 lines
bat * Loading on-line HELP and DOCUMENTATION .....
bat * Written by F.Canova 10/5/83. Enhanced Ken Goosens 11/15/83.
bat * (c) Copyright 1983 by Seaware Corp. all rights reserved.
bat goto -line0
bat -header |* Routine prints general purpose header for help text
bat stack.purge |* remove any pre-typed keystrokes.
bat cls begtype
╔════════════════════════════════════════════════════════════════════════════╗\0F
end
bat type %s%s%s %h ............. Page %n
bat begtype
╚════════════════════════════════════════════════════════════════════════════╝
Press: PGDN for next page, PGUP for prev page, HOME for main menu.
end
bat return
bat -scroll |* Routine accepts key for scrolling help text
bat inkey %k
bat if %k = KEY003 goto -opt0 |* Break key
bat if %k = KEY01B %L = 0 | return |* ESC key
bat if %k = KEY147 %L = 0 | return |* Home key
bat if %k = KEY149 %L = %L - 1 | cls | return |* PgUp key
bat if %k = KEY151 %L = %L + 1 | cls | return |* PgDn key
bat goto -scroll |* ignore any other key.
bat * ROUTINE TO HAVE USER GIVE A COMMAND A TRY !!
bat * %A = string which must match
bat -tryit
bat begtype
Enter your guess! ;
end
bat -tryit.loop
bat if .%a <> . skip 8 |* end of string ?
bat begtype
EXCELLENT !! - that's exactly it!
end
bat read Press the ─┘ key to continue to next section.....
bat return
bat %b = %a $ 1 1 |* get 1st letter
bat %a = %a $ 2 |* remove it from string
bat -tryit.try
bat inkey %i |* get a key.
bat if %i = KEY020 type %b; | goto -tryit.loop
bat if %i = %b type %i; | goto -tryit.loop
bat beep goto -tryit.try
bat -line0
bat -line44
bat cls begtype
\0F╔════════════════ BATDOC ═══════════════════╗
║ Menu driven HELP and DOCUMENTATION. ║
╙───────────────────────────────────────────╜
GENERAL:\07
1. Introduction and how to use this Help.
2. The user supported concept.
3. BAT-BBS information. On-line users forum.
\0FEXTENDED BATCH LANGUAGE version 2.0\07
4. What BAT is.... an introduction.
5. Printing to display.
6. Reading data from users.
7. Making decisions and controlling program flow.
8. Using the keyboard stack.
9. Sensing program's results.
10. Assignment statements.
11. Debugging aids.
12. Additional information.
0. Exit.
END
bat -entry0
bat read Enter the number of your selection. > %A
bat if / = /%a %a = 1
bat if %a < 13 if %a > 1/ cls goto -opt%a
bat if %a < : if %a > / cls goto -opt%a
bat beep begtype
I DON'T KNOW THAT OPTION!
Just enter a number 0 to 12 and press the ─┘ key.
end
bat goto -entry0
bat -opt0 cls begtype
Ready to leave on-line help! Press a key:
<\0FS\07>ystem <\0FD\07>emo <\0FH\07>elp
end
bat -exiting inkey %a
bat if %a = S exit
bat if %a = H goto -line0
bat if %a = D stack BATDEMO | exit
bat beep goto -exiting
bat -line1
bat -opt1 %h = INTRODUCTION | %L = 1 | %N = 1.0
bat call -header
bat begtype
This program will provide you with help information on the use of
the EXTENDED BATCH LANGUAGE version 2.0. It is designed to allow for
easy access and retrieval of information that would be harder to find
by more conventional means.
The information is broken up into multiple sections. Each section
may have several pages. To access each page in order, just keep
pressing the PGDN key. At the top of your screen is the name of the
section which you are in and the page number.
\0FNote:\07
If you wish to directly enter another section now, press the \0fHOME\07
key to return to the main menu, enter the proper \0fsection number\07 and
press the \0f─┘\07 key.
end
bat call -scroll | goto -line%L
bat -line2 %n = 1.1 | call -header | begtype
While in any of these sections, there are just three keys needed:
PGDN - This key will advance to the next page of any section. If
there are no more pages in the section, then it will advance
to the next section.
PGUP - This key will back up to a previous page within a section.
If there are no more previous pages within a section, it
will backup to the previous section.
HOME or ESC - Either of these keys will return directly to the
main menu. From the menu, any section can be looked at
directly by entering the section number and pressing ─┘.
end
bat call -scroll | goto -line%L
bat -line3 %n = 1.2 | call -header | begtype
There are several sections where you will be given questions and answers.
If you would like to peek and see answer without specifically answering it,
you can press the space bar to reveal the answer letter by letter.
One interesting facet you should know while using this on-line help
and documentation is that you are using the EXTENDED BATCH LANGUAGE
program to display and control these menus.
Never before has a batch language been so powerful on the IBM
personal computer as to be able to provide a facility like this. In
the following pages of description, we hope that you will see, as we
did, that this program has extraordinary capability which does much
more than just expand the capability of DOS. In fact, it gives new
power to your system by providing capabilities never before possible.
end
bat call -scroll | goto -line%L
bat -opt2
bat -line4 %H = USER%sSUPPORTED | %L = 4 | %n = 2.0 | call -header | begtype
╓─ ─╖
║ PRIVATE USERS, If you are using this program and find it of value, ║
║ your contribution ($30 suggested) will be appreciated. ║
║ ║
║ You are encouraged to copy and share this program with other users, ║
║ on the conditions that the program is not distributed in modified ║
║ form, that no fee or consideration is charged, and that this notice is ║
║ not bypassed or removed. ║
║ ║
║ In appreciation of your $30 contribution, you will be provided with a ║
║ detailed users guide and diskette giving you complete descriptions, ║
║ examples, and tips on this program's use. All contributors are given ║
║ access to the BAT-BBS, a hot-line for assistance, tips, and updates. ║
║ ║
║ The $30 license fee (per system) is required for COMMERCIAL USERS if ║
║ used in a place of business or incorporated into another product. ║
║ ║
╙─ (c) Copyright 1982, 1983 by Seaware Corp. All rights reserved. ─╜
end
bat call -scroll | goto -line%L
bat -line5 %n = 2.1 | call -header | begtype
For your $30 contribution, you will be provided with a detailed users
guide. This hardcopy manual has over 70 pages of descriptions, examples,
useful utilities, and tips on this program's use. It is prepunched for an
IBM binder for ready reference. You will also receive a diskette
containing the latest program version and useful utilities. All
contributors are also invited to use the BAT-BBS, an on-line forum for
user's ideas, tips, programs, and assistance. (See next section for more
information). Only with your support can we help you even more.
This concept was founded by Andrew Fugleman at Headlands Press, Inc.
with a series of software called "Freeware"(tm). I would like to thank
Andrew for his inspiration and help. Because I feel that good software
should have someone standing behind it, we at Seaware want to put your
contribution directly into support for you as our thanks of your support of
us. If you find this program of value, you are encouraged to send in your
contribution. Your support will not go unnoticed.
Seaware Corp. ≡≡≡≡ Post Office Box 1656 ≡≡≡≡ Delray Beach, FL 33444
end
bat call -scroll | goto -line%L
bat -opt3
bat -line6 %H = BAT%s-%sBBS | %L = 6 | %n = 3.0 | call -header | begtype
One of the special services we provide to EXTENDED BATCH LANGUAGE
users is through a communication medium called "BAT-BBS". This is
a direct link from you to other users, as well as Seaware.
The following list shows the many things that
BAT-BBS can provide . . .
end
bat call -scroll | goto -line%L
bat -line7 %n = 3.1 | call -header | begtype
FOR USERS WITH A MODEM:
* BAT-BBS is a hotline for your questions!
* Directly access our computer at Seaware via phone.
* It will be ready to give helpful ideas.
* Programs and Utilities are available to download.
* Users are welcome to upload their programs/ideas.
* Tips and techniques are on-line.
* Converse with other users and program author via
electronic mail.
* Receive program updates as soon as they are available.
end
bat call -scroll | goto -line%L
bat -line8 %n = 3.2 | call -header | begtype
IF YOU DON'T HAVE A MODEM:
* You can still phone the BAT-BBS if you wish to
have your questions answered via voice. A
recorder will take your message.
end
bat call -scroll | goto -line%L
bat -line9 %n = 3.3 | call -header | begtype
You can access the bulletin board service by using any 300 baud or
1200 baud modem with your computer. You should call the computer
using 7 data bits, even parity, and 1 stop bit.
You will also need a communication program such as PC-TALK III,
CROSSTALK, or Asynchronous Communication Package version 2.0. Contact
your local computer store if you need more information or help with
communication equipment or software.
Service is from 00:01 hours to 18:00 hours daily, Eastern Standard Time.
A phone number and your personal password will be supplied when we receive
your contribution.
end
bat call -scroll | goto -line%L
bat -line10 %n = 3.4 | call -header | begtype
To access BAT-BBS by modem:
1. Call the BAT-BBS phone number and wait about two rings then
hang up.
2. Call the BAT-BBS again, it will immediately answer the
phone and wait for the carrier from your modem.
To access BAT-BBS by voice:
1. Call the BAT-BBS phone number and wait about four rings.
A recorder will take your question on the forth ring.
2. You can take your time. The recorder will continue as long
as you are talking. Be sure to leave your NAME and ADDRESS for
a response.
end
bat call -scroll | goto -line%L
bat -opt4
bat -line11 %H = INTRODUCTION | %L = 11| %n = 4.0 | call -header | begtype
BAT is short for Extended Batch Language. BAT is a powerful productivity
tool for the IBM Personal Computer. It represents a significant advance in
providing a comprehensive yet easy to learn and use facility for
controlling tasks you give your computer. It can even give you on-line
documentation SUCH AS THIS!
BAT is a command programming language. It is a high level language that
can be used as a direct replacement or in conjunction with DOS batch files.
It can operate with IBM DOS versions 1.0, 1.1, or 2.x. Compared with
standard DOS batch files, BAT has superior control structures, string
handling, and user interfaces. It also has tracing facilities, and is easy
to learn and use. Many aspects of the language are like BASIC. Users of
VM/370 will also find it similar to EXECs. It seems that both "end users"
and programmers find BAT a simple and effective language.
end
bat call -scroll | goto -line%L
bat -line12 %n = 4.1 | call -header | begtype
With Extended Batch Language, you can have:
- Better control of messages to the screen
- Accept responses from the user and create responses to programs
- String handling operations (substring, length, etc.)
- Arithmetic expressions and assignments
- Comparisons and program return codes
- Search for files or tell if they exist
- Complete freedom to mix DOS and BAT commands within the same control file
Let's look at how it measures up to today's DOS......
end
bat call -scroll | goto -line%L
bat -line13 %n = 4.2 | call -header | begtype
Function DOS 1.1 DOS 2.0 Extended Batch Lang.
---------- ------- ------- --------------------
BEEP X
CALL/RTN X
CLS X X
BEGSTACK X
BEGTYPE X
EXIT X X
GOTO X X
IF Limited X
INKEY X
READ X
READSCRN X
SKIP X
STATEOF Limited X
STACK X
TYPE Limited X X
Assignments X
TRACE X
DOS Vars X X X
Global Vars X
Return Codes X X
end
bat call -scroll | goto -line%L
bat -line14 %n = 4.3 | call -header | begtype
As you can see from the previous chart, Extended Batch Language has more
power and enhanced capabilities than either DOS 1.1 or DOS 2.0. This
program uses these capabilities to solve common problems for......
The system programmer - who needs to do long sequences of tasks between
linker, compilers, debuggers, and editors. He can now create an
intelligent link between these programs. For instance, he may wish to do a
link depending on if the previous compile was successful. He can also
respond automatically from a keyboard "stack" into various utilities.
The secretary - who has several types of tasks to perform (word
processing, accounting packages, etc) and requires a simple way of changing
from one type of task to another, perhaps with optional help text.
The student - who wishes to go from one game to another without having to
learn the system commands required to make each available.
Testers - who wish to automate long, boring tests and procedures on the
personal computer. An excellent tool for a manufacturing line.
end
bat call -scroll | goto -line%L
bat -line15 %n = 4.4 | call -header | begtype
The effect of using BAT is to put "covers" on the programs and system
that it controls. A friendly, easy to use interface is easily created.
Described in these pages is a solution to batch files through the use of
BAT.
Once you have looked over the descriptions of each command, browse
through the BATDEMO.BAT file and look at the commands in operation. By
trying out some sample programs, you should be able to gain a full
understand of how to write some powerful batch files by using Extended
Batch Language.
Copyright (c) 1982, 1983 by Seaware Corp. Program by
All Rights reserved by Seaware Corp. Frank Canova
end
bat call -scroll | goto -line%L
bat -opt5
bat -line16 %H = HOW%sTO%sPRINT | %L = 16| %n = 5.0| call -header| begtype
The simplest thing to for Extended Batch Language to do is to print text
on the display. This is done by either of two commands, TYPE and BEGTYPE.
The TYPE command can be used for something as simple as saying hello!
For example:
BAT TYPE HELLO THERE
This is all that is needed. This command can be typed directly from DOS
(this is called immediate mode) or be entered into a file such as
"TRIAL.BAT" (this is called direct execution mode). To execute it as a BAT
program with the file, just type the file's name "TRIAL" from DOS and you
will see the results of the program "HELLO THERE" coming from BAT.
end
bat call -scroll | goto -line%L
bat -line17 %n = 5.1 | call -header | begtype
You can also put DOS variables into this command to display their
contents. For example, if the "TRIAL.BAT" file contained the line:
BAT TYPE HELLO THERE %1 %2
Then when we start the BAT program from DOS, we might enter:
TRIAL COMPUTER USER
DOS will automatically store the words after the program name into its
variables. Therefore, in the TYPE command, we will see contents of these
variables on the screen. The resulting message would be:
HELLO THERE COMPUTER USER
end
bat call -scroll | goto -line%L
bat -line18 %n = 5.2 | call -header | begtype
There is a second method of putting text onto the display. This is with
the BEGTYPE command. Although it will not display the contents of
variables, it is very useful for displaying large blocks of text, such as
menus. For example, if the "TRIAL.BAT" file contains:
BAT BEGTYPE
This is a large block of text. It is useful for menus. Note
that Upper/Lower case characters are displayed intact here.
The block is always ended with "END" in the first column
after the text finishes.
END
When executed, the "TRIAL.BAT" program will display:
This is a large block of text. It is useful for menus. Note
that Upper/Lower case characters are displayed intact here.
The block is always ended with "END" in the first column
after the text finishes.
end
bat call -scroll | goto -line%L
bat -line19 %n = 5.3 | call -header | begtype
There is an additional advantage to using BEGTYPE command. This command
can also highlight text to the user. This is done by using the form:
[\\hex] within the text block.
For example if the text block contained \\0F within the text, the result
would be \0F High Intensity Text ! \07.
By choosing different values, the screen attributes can be controlled to
create inverted video, blinking, underlined, and very colorful text.
An additional command CLS can be used to clear the display before
printing data. For instance, the combination "BAT CLS BEGTYPE" is quite
useful for printing menus and text such as this screen.
end
bat call -scroll | goto -line%L
bat -line20 %n = 5.4 | call -header | begtype
To control the color of text, use BEGTYPE. To get a particular effect,
put in "\\mn" where mn are two hex digits (0123...ABCDEF). The set
effect will continue within the BEGTYPE unless another setting is
put into effect. Here are the colors against the black background.
HEX for NORMAL HEX for BOLD
\0101 BLUE\07 \0909 LIGHT BLUE\07
\0202 GREEN\07 \0A0A LIGHT GREEN\07
\0303 CYAN\07 \0B0B LIGHT CYAN\07
\0404 RED\07 \0C0C LIGHT RED\07
\0505 MAGENTA\07 \0D0D LIGHT MAGENTA\07
\0606 BROWN\07 \0E0E YELLOW\07
\0707 WHITE\07 \0F0F LIGHT WHITE\07
end
bat call -scroll | goto -line%L
bat -line21 %n = 5.5 | call -header | begtype
The least significant hex digit ("n" of "mn") controls foreground, i.e.
the lettering. The more significant digit controls the background
(color around the lettering). The normal setting is white foreground
on black background (07 hex). To get \87blinking\07 letters on a black
background, make the first hex digit 8. For example, the blinking you
here see is produced by "\\87".
To vary the background color, put the digit of the first seven colors
in the \17first\07 position. For example the blue background
you see here is produced by "\\17". \70Reverse video\07 would be black on
white, i.e. "\\70". To combine \C0blinking\07 with a different background
color, \0fadd 8\07 to the first hex digit. Black on red would be "40",
so to get the blinking we add 8 to 4 to get "\\C0" as the control
(remember, this is hex, not decimal).
end
bat call -scroll | goto -line%L
bat -line22
bat begtype
\0fNOW IT'S YOUR TURN !!!\07
If the \0f%4\07 variable contains the word \0fDAY\07, what is the command to display
the words "\0fFUN DAY\07" on the display?
end
bat %A = BAT%sTYPE%sFUN%s%%4
bat call -tryit
bat -opt6
bat -line22 %H = READING | %L = 22| %n = 6.0 | call -header | begtype
In order to get input from the user, there are two available commands,
READ and INKEY.
When the command word READ is seen in the batch file, an input line is
accepted from the user. All function keys are assigned to the normal DOS
edit functions. When ENTER is pressed, the input line is assigned to DOS
variables.
Each word will be assigned in order to the variables indicated after the
READ command. When there are no more variables after the READ command to
assign, the remainder of the response is thrown away. If there are more
variables to be assigned after the READ command than there are words from
the user, these variables will be cleared out to a empty state. For
example:
BAT READ Please enter your name ==> %1 %2
This would prompt the user and wait for him to enter two words. These
words will be saved in the %1 and %2 variables.
end
bat call -scroll | goto -line%L
bat -line23 %n = 6.1 | call -header | begtype
Note that there does not have to be any variables indicated after the
command READ. In this case, BAT would wait for the enter key, throw away
any response, then continue to process the next batch file command.
end
bat call -scroll | goto -line%L
bat -line24 %n = 6.2 | call -header | begtype
In the event that you wish to get a single keystroke from the user, the
INKEY command should be used.
This command will wait for the user to enter a single key on the keyboard
and return its value in the optional variable. This key can be not only
letters, but all function keys, control keys, etc. For example:
BAT INKEY Press any key to continue... %0
When the user presses a single key, that key is saved into the variable %0.
If the key that is pressed is in the range of "!" to "z" (decimal 33 to
122) then the key saved to the optional variable. If you wish this key to be
echoed to the display, you must specifically use the TYPE command.
end
bat call -scroll | goto -line%L
bat -line25 %n = 6.3 | call -header | begtype
If the key is not in the above range, then the key will be converted to
the form "KEYxxx" where xxx is the hex value of the key. Extended key
codes will be in the range KEY100 to KEY1FF and nonextended key codes will
be in the range KEY000 to KEY0FF. Refer to Appendix G of the Basic manual
for a complete description of the various assignments of key codes.
The character does not have to be assigned to a variable. If the
variable name is not present following the command INKEY, the system will
wait for any key to be pressed from the user, and then continue processing.
end
bat call -scroll | goto -line%L
bat -line26
bat begtype
\0fNOW IT'S YOUR TURN !!!\07
We wish to create a menu with several options. At a "\0f=>\07" prompt,
the user must enter a \0fsingle letter\07 to select his option. What is
the command needed to request a single keystroke into the \0f%4\07
variable for option selection using the prompt above?
end
bat %A = BAT%sINKEY%s=>%s%%4
bat call -tryit
bat -opt7
bat -line26 %H = PROGRAM%sCONTROL | %L = 26| %n = 7.0| call -header| begtype
There are several ways of controlling the order of execution of a program
written with Extended Batch Language. GOTO, CALL, RETURN, and IF are all
commands that do this. The simplest is the GOTO command:
BAT GOTO -LABEL
If this line is put into a ".BAT" file, then it will stop execution at
this line and resume at the line within the file which contains:
BAT -LABEL
This is a unconditional branch. If the label is not present within the
file, and error will result. Note the minus (-) sign before the label
name. \0FLabels must be preceded with a minus sign.\07 This is done so
that BAT can tell the difference between a label and a command within the
language.
end
bat call -scroll | goto -line%L
bat -line27 %n = 7.1 | call -header | begtype
A CALL command is similar to a GOTO command. The primary difference is
that the line where the CALL command was is saved away. Then a branch to a
label is done, just like the GOTO command. Note that up to three lines can
be saved away at a time with this command. When a RETURN command is found,
the last line that was saved is now restored. Execution resumes at the
line following the original CALL command.
end
bat call -scroll | goto -line%L
bat -line28 %n = 7.2 | call -header | begtype
For example, if a program contains:
BAT TYPE One
BAT \0FCALL -LABEL\07
BAT \0FCALL -LABEL\07
BAT TYPE Four
BAT EXIT
BAT -LABEL
BAT TYPE Two
BAT TYPE Three
BAT \0FRETURN\07
You will see on the display:
ONE
TWO
THREE
TWO
THREE
FOUR
end
bat call -scroll | goto -line%L
bat -line29 %n = 7.3 | call -header | begtype
The final way to control the flow of an Extended Batch Language program
is to use an IF command. The general form of this command is:
BAT IF _word_ _condition_ _word_ _operation_______
Each word can be a fixed string of letters, or a variable, or a
combination of each.
The conditions can be:
< less than
= equal to
> greater than
<> not equal to
The operation can be any of the Extended Batch Language commands.
end
bat call -scroll | goto -line%L
bat -line30 %n = 7.4 | call -header | begtype
For example, all of the following IF statements will compare correctly
and execute their corresponding TYPE command. The first two statements
will initialize variables used in the IF commands.
BAT %1 = ABC
BAT %2 =
BAT IF ABC = %1 TYPE The variable contains ABC.
BAT IF %1 = abc TYPE This also matches.
BAT IF 0 <> 00 TYPE These are different lengths.
BAT IF 0 < 00 TYPE 0 has a smaller length.
BAT IF 456 > 123 TYPE Numerically, 456 is bigger.
BAT IF 456 < %1 TYPE ASCII value of 456 is smaller.
BAT IF AABCD = A%1D TYPE Token substitutions are made.
BAT IF %2 <> %1 TYPE Variables are different lengths.
BAT IF .%2 = . TYPE This matches if var is empty.
BAT IF BOX = BOX IF DOG <> CAT TYPE Did multi-if compare.
end
bat call -scroll | goto -line%L
bat -line31
bat begtype
\0fNOW IT'S YOUR TURN !!!\07
We wish to make a series of tests on a menu option that a user entered.
It is saved in the variable \0f%4\07. What command is needed to test for
the letter "\0fA\07"?
end
bat %A = BAT%sIF%s%%4%s=%sA
bat call -tryit
bat -opt8
bat -line31 %H = KEYBOARD%sSTACK| %L = 31| %n = 8.0| call -header| begtype
There is a method within the BAT language for answering questions from
programs without operator intervention. This is done by a "keyboard
stack". By entering data into the stack, you will essentially be entering
data through your keyboard when any program requests it. In this way, a
batch file can now answer questions programs may have by 'typing' them for
the user.
The keyboard stack operates in a "first-in first-out" basis. That is,
the first line of text put into the stack will be the first seen by the
program when it reads the keyboard. The second line entered will be the
second seen by the program, and so on. As long as there is text remaining
on the stack, ALL requests for data from the keyboard will actually come
from the stack. Once the stack has been emptied by the program, data will
then come from the keyboard as usual.
There are two commands which store data into the stack, STACK and
BEGSTACK. Here's some more about them.....
end
bat call -scroll | goto -line%L
bat -line32 %n = 8.1 | call -header | begtype
The STACK command is very much like the previously mentioned TYPE
command. Instead of displaying to the screen, it will "push" data into the
keyboard stack area. When any program is ready to accept information from
the keyboard, the parameters after the STACK command will be used as input.
For example:
BAT * This program will issue remarks to DOS.
BAT %1 = HELLO
BAT STACK REM THIS IS A REMARK FOR DOS
BAT STACK REM VARIABLE %%1 = %1
When executed, the following will appear on the screen:
A>REM THIS IS A REMARK FOR DOS
A>REM VARIABLE %1 = HELLO
end
bat call -scroll | goto -line%L
bat -line33 %n = 8.2 | call -header | begtype
The second command used to stack data is BEGSTACK. This command is
equivalent to BEGTYPE previously described. It is useful for dumping large
amounts of data to the stack area. Although no parameter substitution is
performed, there are several advantages to its use.
First, if a line ends with the ";" (semicolon) character, a carriage
return will NOT be stacked. Second, if "\\HEX" is used where HEX is a
number from 01 to FE, then this exact keyboard value will be stacked. This
is useful for stacking special control characters and symbols. Third, if
"\\00\\HEX" is used, an extended key code will be stacked. This is useful
for stacking function keys and the like. Refer to the Basic manual in
Appendix G under "Extended Codes". Fourth, if \\FF\\HEX is used, the stack
will delay the keyboard characters from appearing to the program for HEX
number of CPU "ticks". There are about 12 hex (18 decimal) ticks per
second in the CPU. In all cases, the word HEX above represents a two digit
hexadecimal number. Finally, \\\\ can be used to stack a single backslash.
Some examples...
end
bat call -scroll | goto -line%L
bat -line34 %n = 8.3 | call -header | begtype
Some examples of BEGSTACK command::
BAT BEGSTACK
\\09 Will stack the tab key.
This text will be stacked ;
on one line!
\\00\\3B Will stack an F1 key.
\\\\ is seen as one backslash.
\\FF\\24 will pause two seconds.
end
Hint: Some programs remove keystrokes before accepting a critical key. In
some cases this can be avoided by using \\FF\\01 in the BEGSTACK command.
end
bat call -scroll | goto -line%L
bat -line35 %n = 8.4 | call -header | begtype
There are also three control commands which are associated with the stack:
STACK.OFF - Redirects data to come directly from
the physical keyboard. Does not remove
any data in the stack.
STACK.ON - Directs data to come from the stack.
This is the default.
STACK.PURGE - Removes any data from the stack and
keyboard buffers which are pending.
end
bat call -scroll | goto -line%L
bat -line36
bat begtype
\0fNOW IT'S YOUR TURN !!!\07
From our menu, we wish to start up a communications program and
automatically dial a phone number with a smartmodem. The communications
program we have will take what is typed on the keyboard and send it to the
modem. The command needed for the modem to dial our phone is
"\0fATD12\07". What Extended Batch Language command will force the
communication program to dial this modem command?
end
bat %A = BAT%sSTACK%sATD12
bat call -tryit
bat -opt9
bat -line36 %H = GETTING%sRESULTS!| %L = 36| %n = 9.0| call -header| begtype
The results of programs often need to be known so that some action can
take place after the program ends.
When the command word READSCRN is seen in the batch file, a line of text
is read from the display screen into variables. Having the ability to read
text from the display can be useful for determining the result of another
program, or making a query for some system status which would not normally
be available within a batch file. For example, by reading a directory from
the screen, a series of files can be submitted to the macro assembler.
Once the assembly is completed, the status can be read from the screen to
determine if there were errors which would stop the link step. Virtually
any message which a program can generate can be used as feedback to a batch
file by using READSCRN.
end
bat call -scroll | goto -line%L
bat -line37 %n = 9.1 | call -header | begtype
Its operation is very much like the READ command except for the fact that
the information which is being read is coming from the display screen and
not the keyboard. Like the READ command, the text from the screen is
tokenized (separated at word boundaries and assigned to variables). The
return code %R will be reflect the line number on the display that was
read. This number will be in the range of 1 to 25 for the top to bottom
lines respectively. Once a line is read, this command will be set to read
the previous line. Repeated READSCRN commands will read UP the display!
For example:
BAT CLS
BAT TYPE HELLO THERE
BAT READSCRN %A %B %C
After execution:
%A contains HELLO
%B contains THERE
%C contains nothing, it is empty.
%R (return code) contains 1, the line number that was read.
end
bat call -scroll | goto -line%L
bat -line38
bat begtype
\0fNOW IT'S YOUR TURN !!!\07
From our menu, we have started the IBM Macro Assembler program. We know
that when this program ends, it will display a number representing the
number of errors that were found. We want to make sure that this number is
zero before continuing to the LINK program. If we save this number in the
variable \0f%A\07, what is the command to read the assembler result from
the display?
end
bat %A = BAT%sREADSCRN%s%%A
bat call -tryit
bat -opt10
bat -line38 %H = ASSIGNMENTS| %L = 38| %n = 10.0| call -header| begtype
If the first character in the command is a '%' (Percent sign), then it is
considered to be an assignment statement. The first variable cannot be any
predefined variable (such as %R or %%), but may be any of the other
variables %0 to %9 and %A to %O. If a DOS command is later executed and
uses one of the variables %0 to %9, it will be properly replaced with the
contents of that variable.
The first assignment token, the operator, and the final tokens are optional.
The assignment statement must appear in one of the following forms:
\0f[var] = \07- create empty variable
\0f[var] = [string] \07- simple assignment
\0f[var] = [number] + [number] \07- addition
\0f[var] = [number] - [number] \07- subtraction
\0f[var] = [number] * [number] \07- multiplication
\0f[var] = [number] / [number] \07- division
\0f[var] = [string] # \07- string length
\0f[var] = [string] $ [index] [length] \07- create substring (like MID$ in BASIC)
end
bat call -scroll | goto -line%L
bat -line39 %n = 10.1 | call -header | begtype
\0f[var]\07 - A DOS variable or global user variable %0 to %9 and %A to
%O. It may not be a predefined variable.
\0f[string]\07 - Any valid token. Letters, numbers, any variable, or any
combination there of. 123, ABC, and 987%J4SF are all valid strings.
\0f[number]\07 - Any token with a numeric result in the range of 0 to
65535. For example (if %A contains 34) the three numbers 98, %A, and 12%A5
(equivalent to 12345) would all be valid numbers. Note that numbers are
always positive and should never contain a sign ( + or - ) character.
\0f[index]\07 - Same restrictions as [number] above except that an
[index] in the range 17 to 65535 is meaningless and is equivalent to the
number 16.
\0f[length]\07 - Same restrictions as [number] above except that a
[length] in the range 16 to 65535 is meaningless and is equivalent to the
number 15. Note that [length] is optional and has a default value of 15.
end
bat call -scroll | goto -line%L
bat -line40
bat begtype
\0fNOW IT'S YOUR TURN !!!\07
We wish to count the number of times that a user has used a certain .BAT
program. We will keep this count in the global user variable \0f%A\07
which will stay active even BETWEEN batch file execution. What is the
command needed to increase the value in this variable by one?
end
bat %A = BAT%s%%A%s=%s%%A%s+%s1
bat call -tryit
bat -opt11
bat -line40 %H = DEBUGGING%sAIDS| %L = 40| %n = 11.0| call -header| begtype
As an aid in debugging, the TRACE.ON command enables a trace flag which
causes each line in the BAT program to be printed as it is executed. Three
'+' (plus) symbols will precede the BAT statement which is printed out as
an aid. The trace can be turned off at any time by the TRACE.OFF command.
A trace can be active during DOS commands within the BAT program. In
addition, trace can be enabled/disabled at any time, even in immediate
mode. Once enabled, it will remain in effect until the TRACE.OFF command
is executed. Errors, execution of other BAT language files, and even
executing DOS commands will not change the trace mode.
end
bat call -scroll | goto -line%L
bat -opt12
bat -line40 %H = ADDITIONAL%sINFO| %L = 40| %n = 12.0| call -header| begtype
The size of the keyboard stack defaults to 512 bytes. This value can be
changed by making the first statement which is executed by the Extended
Batch Language program be of the form: BAT * size. Size is the decimal
number of bytes to reserve for the stack. This must be executed, for
instance, when a system reset is performed because once this area is
installed, the size is never altered until another system reset.
There are additional variables %A thru %O (oh) which are called "global
user variables". These variables are used exactly like the variables
supplied by DOS (%0 to %9) with two exceptions. First, the contents of
these variables are maintained between execution of batch files for as long
as the system is powered on. This "global" feature is useful for keeping
indicators BETWEEN "sessions" of the user. Second, because DOS does not
know about these variables, they \0fcannot\07 be used as variables within
any DOS command. So while "COPY %1 %2" is valid, "COPY %A %B" is not. If
you wish to use them within DOS commands, they must first be copied via a
statement like "BAT %1 = %A".
end
bat call -scroll | goto -line%L
bat -line41 %n = 12.1 | call -header | begtype
PREDEFINED VARIABLES...
A return code is available at memory address [0000:04FE]. If set by a
program, BAT can read this byte value with the variable %R. The string
stored into this variable is in hex with leading zeros truncated.
The current default drive is stored into the %V variable. It is a single
character.
The status of the stack is stored into the %Q variable. It is a "K" if
the READ command will be reading from the keyboard, and a "S" if it will be
reading from the stack area.
There are two character literals. %S represents a space literal and %%
represents a percent sign. Either of these special variables can be stored
into other variables, or used for testing special cases.
end
bat call -scroll | goto -line%L
bat -line42 %n = 12.2 | call -header | begtype
The STATEOF command will search all disk drives for the existance of a file.
The name after the word STATEOF can be a specific name, general name with
wildcard characters (e.g. *.EXE), or it can be a name with a specific drive
specification (e.g. A:PE.EXE). In the last case, only drive A: will be
searched instead of all available drives. Note also that a variable can be
used instead of a file name. In this version of BAT, only files in the
current directory (no paths) can be found.
The return code variable %R is used to indicate the result of the search
for STATEOF. The results are:
0 - File found on default drive.
1 - File not found.
9 - Invalid file name specified.
A to D - Same as return code 0 but instead of being found on the
default drive, it was found on drive A, B, C, or D.
end
bat call -scroll | goto -line%L
bat -line43 %n = 12.3 | call -header | begtype
If a you wish to put more than one command on a line, the vertical bar
"|" is useful. When used with an IF command and the test for the IF
conditions fail, the entire rest of the line will be ignored. Multiple
commands within a BAT statement is very useful when combined with the IF
command. For example:
BAT IF %A = abc TYPE this | CALL -that | GOTO -other
If a comment is needed within a BAT program, the "*" (star) character is
useful. When used after the word BAT, all characters which follow will be
ignored. For example:
BAT * This is a comment to the programmer.
end
bat call -scroll | goto -line%L
bat -line44 %n = 12.4 | call -header | begtype
That's about all the help there is!
If you still need more information, you might wish to contribute in order
to receive a complete users guide and password to the BAT-BBS hot-line. The
manual gives complete descriptions on all available commands with examples
of each. It is prepunched for an IBM binder for ready reference. With
the BAT-BBS, you can receive tips from other users and program updates just
as soon as they are available. We feel that user supported software should
be a two way street. With your help, it will work.
If you find this program valuable, a contribution ($30 suggested) will be
appreciated. To see further benefits of contributing and for more
information, see section 2 of this document.
Seaware Corp.
Post Office Box 1656
Delray Beach, FL 33444
end
bat call -scroll | goto -line%L